home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1998 October / Macworld (1998-10).dmg / Shareware World / Info / For Developers / MSL_2.4.10 / -> Metrowerks Standard Library / -> MSL Release Notes / MSL 2.4.10 Release Notes
Text File  |  1998-08-07  |  31KB  |  921 lines

  1. ========================================================================
  2. Metrowerks MSL 2.4.10 Pro3 Patch 2  Release Notes 
  3. ========================================================================
  4.  
  5. Version: Metrowerks CodeWarrior 2.4.10, Pro3 Patch 2
  6. Date:    August 7, 1998
  7. Authors: Vicki Scott, Michael Marcotty, Matt Fassiotto, Ron Liechty,
  8.          Howard Hinnant 
  9.                   
  10. ========================================================================
  11.  
  12. ========================================================================
  13. New Features in This Version
  14. ========================================================================
  15.  
  16. *  __MSL__ identifier is 0x240a.  This release is known as the Pro3 Patch.
  17.  
  18. *  __MSL_FIX_ITERATORS__ has been removed!  The compiler now fixes
  19.    partial template specializations (be sure and read the compiler
  20.    release notes for restrictions, however).  This means you no longer
  21.    need this hack in your code anymore.  See notes below for how to
  22.    remove this from your code - there is a trick that you have to be 
  23.    aware of.
  24.    
  25. *  <locale> has been completely rewritten to improve speed and size
  26.    of compilation.  See notes below for variances from the Standard.
  27.    
  28. *  slist and hash have been fixed
  29.  
  30. *  auto_ptr is implemented to the Nov 97 Standard now
  31.  
  32. *  <bitset> now uses only one bit per bool instead of one byte
  33.  
  34. *  <algorithm> has been rewritten to fix quite a few bugs and some
  35.    gain in performance and correctness of functions
  36.    
  37. *  mem_fun classes now implemented
  38.  
  39. ========================================================================
  40. MSL 2.4.10 Reported Bugs From MSL 2.4.9 (MPTP Release) Fixed 
  41. ========================================================================
  42.  
  43. *  Fixed a problem with a misplaced increment on pointer operator in
  44.    strstr (string.c) (PPC only)
  45.    
  46. *  Update __MSL__ identifier to 0x240a  (MSL 2.4.10)
  47.    
  48. ========================================================================
  49. MSL 2.4.9 Reported Bugs From MSL 2.4.6 (MPTP Release) Fixed
  50. ========================================================================
  51.  
  52. *  Fix a problem with pre-increment of pointer for PPC strstr function 
  53.    (string.c)
  54.    
  55. *  Updated __MSL__ identifier to 0x2409 (MSL 2.4.9)
  56.    
  57. *  Fixed the problem with multiple includes of <cassert> or assert.h 
  58.  
  59. *  Fixed the problem with OLDROUTINENAMES define
  60.  
  61. *  Fixed the problem with std:: in size_t and offsetof macros
  62.  
  63. *  Fixed problem with POSIX definition of fdopen
  64.  
  65. *  Fixed open flags for win32 files to not truncate files when opening 
  66.  
  67. *  Fixed project files for x86 to include the relative path names
  68.  
  69. *  Added the "sys" directory and moved stat.h to it so that x86 files
  70.    who look for <sys\stat.h> can now find it
  71.    
  72. *  Moved stroul syntax and stroud syntax files to a new folder called
  73.    "MSL Technical Notes" and restored their contents (missing since
  74.    Pro 1)
  75.    
  76. *  Fixed SIOUX project files on Mac to not include the prefix file 
  77.  
  78. ========================================================================
  79. Reported Bugs Fixed in This Version
  80. ========================================================================
  81.  
  82. *  MW00042 (Mac)
  83.    The definition of O_RDWR in the ANSI header fcntl.h is now defined as 
  84.    0x01, instead of 0x0. 
  85.                               
  86. *  MW00225 (Mac)
  87.    Fixes the inadvertant release of a shared resource prior to when it 
  88.    should be released.
  89.  
  90. *  MW00288 (x86)
  91.    Fixes a problem with exit code on Windows' platforms. 
  92.  
  93. *  MW00294 (Mac)
  94.    Fixes a problem following aliases
  95.  
  96. *  MW00427 
  97.    Fixes specializations in valarray
  98.  
  99. *  MW00445 (Mac, x86 still needs to be fixed)
  100.    Fixes a problem with trying to seek past EOF
  101.  
  102. *  MW00456 (Mac)
  103.    Fixes a problem with renaming directories
  104.  
  105. *  MW01597 (x86)
  106.    Fixes a problem with renaming "open" to "_open"
  107.  
  108. *  MW01813 (Mac/PPC)
  109.    Fixes a one-off bug in strstr when null is part of the pattern 
  110.  
  111. *  MW02103
  112.    MW06325
  113.    The speed and size requirements (too slow, too big) have been fixed
  114.    in <locale> in the C++ library.  It no longer takes >64K memory nor 
  115.    half and hour to compile locimp.cpp  
  116.  
  117. *  MW02520
  118.    Fixes string I/O alignment in C++ 
  119.    
  120. *  MW02557
  121.    removed the Win32 SDK header x86_prefix.h from MSL.  We now 
  122.    use the one provided with the SDK.
  123.                 
  124. *  MW02625
  125.    Fixes a problem with memchr and __memrchr for characters > 0x80
  126.  
  127. *  MW02733
  128.    Fixes a problem with state bit when fflush is called 
  129.    
  130. *  MW02910
  131.    Fixes character output alignment in C++
  132.  
  133. *  MW03236
  134.    Fixes the search algorithm in <algorithm> to be more efficient 
  135.    
  136. *  MW03272 
  137.    Fixes a bug in fread when a file contains fewer bytes than
  138.    requested
  139.   
  140. *  MW03278 (mac)
  141.    Fixes a cosmetic bug in SIOUX
  142.  
  143. *  MW03295 (mac)
  144.    Fixes a bug in FSp_fopen with _fcreator and _ftype
  145.  
  146. *  MW05946
  147.    Fixes a bug in getting memory for a error warning during 
  148.    an exception
  149.  
  150. *  MW06295
  151.    Fixes bug when trying to print a long long cast to an int
  152.  
  153. *  MW06496
  154.    Fixes a bug with strftime incorrectly returning zero 
  155.  
  156. *  MW06626
  157.    Fixes a bug in setw when temporary string is destructed 
  158.    leaving a dangling pointer
  159.  
  160. *  MW07009 (x86)
  161.    Fixes a bug in WinSIOUX when passing arguments to main 
  162.  
  163. *  MW07031
  164.    Fixes a bug in SIOUX WASTE with data type too small for 
  165.    possible values
  166.    
  167. *  unix headers stat.h/fcntl.h/unistd.h were not including the 
  168.    correct version header file because __dest_os was not defined.
  169.          
  170.    
  171. ==============================================================   
  172. Math bugs fixed in this release
  173. ==============================================================  
  174.  
  175. *  MW01251
  176.    fabs crashes under CFM-68K
  177.    
  178. *  MW01298
  179.    __float_min etc. have been removed from float.c.  Standard 
  180.    constants such as FLT_MI,FLT_MAX are now translated by the 
  181.    compiler at compile time.
  182.    
  183. *  MW02445
  184.    precision of printing doubles was incorrect even when values 
  185.    are exact(eg. ints).  the module ansi_fpx86.obj replaces
  186.    ansi_fp_x86.c on INTEL.
  187.              
  188. *  MW07091
  189.    could not reproduce this, but the implementation of complex 
  190.    log10 was inefficient.  We now multiply by a constant instead
  191.    of a function call/divide.  this should be fixed.
  192.  
  193. *  fmin/fmax/fdim
  194.    now are strictly compliant with C9X
  195.  
  196. *  complex abs/sqrt
  197.    were not working for large values or values near 0.
  198.    using hypot instead of sqrt(x*x + y*y) instead.
  199.     
  200.  
  201. ==============================================================   
  202. The following user reported bugs were fixed in Pro3, but were 
  203. not mentioned in the Pro3 Release Notes:
  204. ==============================================================  
  205.  
  206. *  MW00102
  207.    SIOUXSetTitle
  208.  
  209. *  MW00222
  210.    gratuitous warning messages
  211.    
  212. *  MW00319  
  213.    memory leaks in streams
  214.    
  215. *  MW00376
  216.    exception safe uninitialized_fill
  217.          
  218. *  MW00427
  219.    brain dead valarray 
  220.    
  221. *  MW00451
  222.    string exposed refcounted implementation
  223.      
  224. *  MW00593
  225.    mutable bug in auto_ptr
  226.    
  227. *  MW00622
  228.    sputbackc
  229.   
  230. *  MW00767
  231.    string::operator[] fixed
  232.    
  233. *  MW00805
  234.    exception saftey of entire lib, esp. vector::op=
  235.    
  236. *  MW00827
  237.    explicit facet constructor
  238.    
  239. *  MW01254
  240.    problem with vector.h --> insert
  241.    
  242. *  MW01279
  243.    what() in exception is redeclared 
  244.    
  245. *  MW01300
  246.    mode_t defined twice
  247.    
  248. *  MW01321
  249.    fseek and DOS line endings
  250.  
  251. *  MW02075
  252.    problem with first arg to multimap being const
  253.    
  254. *  MW02345
  255.    better <limits>
  256.       
  257. *  MW02522
  258.    destructor problems for const objects in vector
  259.    
  260. *  MW02531
  261.    string::find
  262.    
  263. *  MW02709
  264.    brain dead valarray
  265.    
  266. *  MW02729
  267.    headers don't pass check syntax
  268.    
  269. *  MW02783
  270.    isnan macro bug 
  271.             
  272. *  MW02789
  273.    more valarray problems fixed
  274.    
  275. *  MW02848
  276.    bug in hash_table::iterator::operator =()
  277.    
  278. *  MW02948
  279.    abs added to cmath    
  280.    
  281. *  MW02949
  282.    missing size() in valarray
  283.       
  284. *  MW02964
  285.    missing wchar functions
  286.    
  287. *  MW03156
  288.    poor bad_alloc design
  289.    
  290. *  MW03455
  291.    missing operator-> on iterators
  292.    
  293. *  MW05605
  294.    incorrect complex::atan2
  295.    
  296. *  MW05846
  297.    printing \r
  298.    
  299. *  MW05968
  300.    problem in map.h trying to access deallocated memory 
  301.    
  302. *  MW06626
  303.    a locale problem
  304.   
  305.      
  306. ========================================================================
  307. Known Bugs and Incompatibilities
  308. ========================================================================
  309.  
  310. *  multibyte routines not implemented - we may have an alpha version 
  311.    ready by Pro4
  312.  
  313. *  wide character support in C++ is unsupported in this release, but it 
  314.    should be ready by Pro4
  315.    
  316. *  MW02614 
  317.    MW02687 
  318.    On 68K for 8-byte doubles, using function pointers to ANSI math 
  319.    functions do not work.  
  320.    
  321. *  MW01261
  322.    Precision of printing doubles is incorrect even when values are 
  323.    exact (e.g., int). 
  324.  
  325. *  MW02521 (mac)
  326.    Conflict with order of includes for Types.h and mcompile.h
  327.  
  328. *  MW02761 (x86)
  329.    Problem with _access if path is a directory
  330.  
  331. *  MW03025 (mac)
  332.    SIOUX WASTE project file needs addition settings to build optimally 
  333.    
  334. *  MW07513
  335.    long double math functions do not work on PPC.  The problem
  336.    is that prototypes instead of macros are in cmath.  We do 
  337.    not support the 128 bit long double data type on the PPC,
  338.    so the return values of these functions are not properly
  339.    coerced into IEEE 64 bit doubles.  a work around is to
  340.    have a macro that maps to the appropriate double version
  341.    of the function(i.e. #define tanl tan).             
  342.              
  343. *  MW02614/MW02687/MW01266 
  344.    on 68K for 8 byte doubles, functions pointers to
  345.    ANSI math functions do not work.
  346.              
  347. *  MW02914/MW06751 
  348.    math.h/fp.h conflicts on 68K when including HyperXcmd.h
  349.    (In general, math.h and fp.h conflict on 68K).  This should
  350.    be fixed in the next drop of Apple's universal headers.
  351.  
  352. *  MW03454/MW05701 
  353.    strtod/sscanf produce results off by a factor of 10 
  354.    on only 68K.
  355.                      
  356. *  MW07337
  357.    feature not yet added. standard api's atof() and sscanf do 
  358.    not yet implement the C9X extension which requires these
  359.    to recognize the strings NAN and INF as input values.
  360.              
  361.  
  362. ========================================================================
  363. Additional Notes
  364. ========================================================================
  365.  
  366. Disclaimer:
  367.  
  368. This library represents a major step forward in providing fully Standard
  369. compliant C and C++ libraries.  We strongly desire to be responsive to
  370. users' requests and needs; however, our position is that we uphold and
  371. implement the Standards behavior in both the C and C++ libraries.  If a
  372. behavior was provided by MSL but goes against the Standard, we reserve
  373. the right to modify the behavior to comply fully with the Standard.  If,
  374. however, a behavior is unspecified or not specifically forbidden by the
  375. Standard, we will continue to support it in the library.  We reserve the 
  376. right to use our discretion in implementing non-standard and 
  377. non-specified C and C++ library behavior.
  378.  
  379. ===================================================================
  380. *  C++ Library Update
  381. ===================================================================
  382.  
  383.  
  384. General Comments
  385. ----------------
  386.  
  387. The battle with overly used inline continues.  Much of the library has
  388. been fixed in this respect, but there is still a ways to go.
  389.  
  390. Fixing the implicit conversion warnings continues.  Much progress
  391. has been made, but there is still more work to do.
  392.  
  393. <algorithm>
  394. -----------
  395.  
  396. The implementation of many methods has been simplified without
  397. changing the actual algorithms used.  Inline depth has been reduced,
  398. and readability increased.
  399.  
  400. Several methods used opertor!= on their template parameters.  This bug
  401. has been corrected to use operator== instead.  Affected methods include:
  402. find, search, search_n, remove_copy and unique_copy.
  403.  
  404. An algorithmic bug was fixed in find_end.
  405.  
  406. Return type of generate_n changed from OutputIterator to void in
  407. compliance with the standard.
  408.  
  409. reverse algorithm changed to that suggested by the standard.
  410.  
  411. Added a random access iterator specialization to partition.
  412.  
  413. Added exception saftey to stable_partition.
  414.  
  415. Rewrote sort to simplify and achieve a 10% to 15% speed increase.
  416.  
  417. Rewrote stable_sort.  It now is exception safe and gets the right
  418. answer.
  419.  
  420. Rewrote the heap functions for a modest performance improvement.
  421.  
  422. <bitset>
  423. --------
  424.  
  425. Rewrote class to only use 1 bit per bool, as opposed to 1 byte as
  426. implemented previously.
  427.  
  428. <fstream>
  429. ---------
  430.  
  431. Minor changes in the construction of the fstream classes which removes
  432. duplicated work, and eliminates a memory leak.
  433.  
  434. <functional>
  435. ------------
  436.  
  437. Simplified implementation of the arithmetic, comparison and logical
  438. operators to increase readability.
  439.  
  440. Rewrote mem_fun classes and functions.
  441.  
  442. <ios>
  443. -----
  444.  
  445. Altered ios_base in such a way that its default constructor does not
  446. touch any memory.  This is key in getting the standard streams (cin,
  447. cout, etc.) to be functional before and after main, and at the same
  448. time, not leak memory.
  449.  
  450. Modified the default constructor of basic_ios for the same reasons as
  451. mentioned above for ios_base.
  452.  
  453. Added a _SaveFlags class that saves the flags of a ios_base.  This is
  454. used in <locale> to temporarily change the flags of a stream in an
  455. exception safe manner.
  456.  
  457. <iostream>
  458. ----------
  459.  
  460. Put the static ios_base::Init object back in this header (it was
  461. moved from here in Pro3).  It was moved out to help stop a memory leak
  462. associated with the standard streams.  The stream classes have been
  463. modified now to not leak, even with the Init object back in this
  464. header.  Having the Init object in this header is key to getting the
  465. standard streams to be functional before and after main.
  466.  
  467. <istream>
  468. ---------
  469.  
  470. Removed #include <extmath.h>.  It was not needed, and was causing a
  471. conflict with assert.
  472.  
  473. A default constructor was added to aid in the construction of the
  474. standard streams in a non-leaking manner.
  475.  
  476. Corrected the basic_istream constructor which takes a streambuf
  477. pointer.  This not only made the class more standard, but corrected a
  478. problem with user-defined classes derived from istream.
  479.  
  480. basic_iostream constructor modifed so that ios_base::init() is called
  481. only once.  This stops a memory leak.
  482.  
  483. <iterator>
  484. ----------
  485.  
  486. Added a standard partial specialization to iterator_traits:
  487. template <class T> struct iterator_traits <const T*>
  488.  
  489. Added the macro #define __MSL_FIX_ITERATORS__(myType) for when
  490. MSIPL_PARTIAL_SPECIALIZATION is defined (partial template
  491. specialization support).  This macro is meant to define away code
  492. which was previously needed to work around lack of partial template
  493. specialization support.  Unfortunately the old __MSL_FIX_ITERATORS__
  494. macro did not include a trailing ';', thus forcing users to add one.
  495. Now when MSIPL_PARTIAL_SPECIALIZATION is turned on, the trailing ';'
  496. that users had to add will still be there, possibly in a place that
  497. the compiler doesn't appreciate.  Such ';' must be manually deleted
  498. by the user at each use.  The version of the  __MSL_FIX_ITERATORS__
  499. macro that is active when MSIPL_PARTIAL_SPECIALIZATION is not defined
  500. has been modified to include the trailing ';'.  Thus, once the user
  501. removes the trailing ';' from each use of the __MSL_FIX_ITERATORS__
  502. macro, MSIPL_PARTIAL_SPECIALIZATION can be turned on and off with
  503. ease.  Sorry for the inconvenience.
  504.  
  505. To summarize, in your code change
  506. __MSL_FIX_ITERATORS__(MyClass);
  507. to
  508. __MSL_FIX_ITERATORS__(MyClass)
  509.  
  510. This macro will not be required for your classes with partial template
  511. compiler support.  At the time of this writing, it is not certain if
  512. new compilers will be released simultaneously with this library.
  513.  
  514. The distance() method has been simplified.
  515.  
  516. reverse_iterator was rewritten without mutex.  mutex is too expensive
  517. to burden such a light weight object with.  reverse_iterators passed
  518. by value to multiple threads will maintain their integrity.  However,
  519. the object that they refer to will have to be properly mutex'ed by the
  520. user.  This design insures that you only pay for mutex when you need
  521. it.
  522.  
  523. Rewrote istream_iterator for several reasons:  1.  It mistakenly
  524. referred to cin.  2.  It had a mutex object.  3.  It had a bool data
  525. member that was unnecessary (this should be a very light weight
  526. object).
  527.  
  528. Removed copy constructor and destructor from ostream_iterator.  The
  529. compiler generated versions work just fine, and the result is a class
  530. that the compiler has an easier time inlining.
  531.  
  532. Rewrote istreambuf_iterator for modest performance gains.
  533.  
  534. <limits>
  535. --------
  536.  
  537. Changed #include <wchar.h> to <cwchar>.  Silly bug!
  538.  
  539. Removed previous implementation which was in comments.
  540.  
  541. <locale>
  542. --------
  543.  
  544. Rewrote.  The new version fixes many bugs.  Most notably, the C++
  545. library will now compile with much less ram and cpu.
  546.  
  547. There is a performance / functionality tradeoff that can be controlled
  548. by the user via #define flags in <mcompile.h>.  The tradeoff stems
  549. from the fact that most of the code in <locale> lives under templated
  550. virtual methods.  With current compiler technology, templates with
  551. virtual methods are completely instantiated if an instance of that
  552. class template is constructed.  This adds up to a lot of code that is
  553. instantiated, but will often never be used.
  554.  
  555. Metrowerks is working on both library and compiler technology to
  556. optimize away this problem.  In the mean-time we offer some low-tech
  557. options to save both code size, and library compile time:
  558.  
  559. The virtual key word can be easily turned on and off for each
  560. individual facet class in <locale>.  When all facets have virtual
  561. methods, this is standard.  Turning off the virtualness of a facet's
  562. methods means that you will not be able to derive from a facet and
  563. thus alter I/O behavior.
  564.  
  565. There is a group of facets that have "punct" in their name:
  566. numpunct, moneypunct, and timepunct (timepunct is non-standard).
  567. These facets are very small (in code), but offer tremendous
  568. flexibility in the custimization of I/O.  With these classes one can
  569. alter the placment of commas for grouping digits (thousands
  570. seperators), or even change what character is used.  The decimal point
  571. character can also be modified.  Even the character strings that
  572. represent true and false can be changed.
  573.  
  574. A good performance / functionality tradeoff is to make only the
  575. "punct" facets virtual.  This can easily be done by
  576.     #define _ONLY_VIRTUAL_PUNCTS
  577. in <mcompile.h>.  In fact this is the default state of the C++ libs
  578. that we will ship.
  579.  
  580. Also in <mcompile.h> you will notice two other
  581. flags that are commented out:
  582. //    #define _NO_VIRTUAL_FACETS
  583. //    #define _CUSTOM_VIRTUAL_FACETS
  584.  
  585. If you wish no facets to have virtual methods, then comment out
  586. _ONLY_VIRTUAL_PUNCTS, and uncomment _NO_VIRTUAL_FACETS.
  587.  
  588. If you with to define precisely which facets have virtual methods then
  589. use the _CUSTOM_VIRTUAL_FACETS flag, and then modify <locale> at line
  590. 71 to specify which facets you want virtual methods turned off.  The
  591. macro magic there ought to be clear for those wishing to travel down
  592. this road.
  593.  
  594. For a completely standard lib (all facets have virtual methods) then
  595. comment out all three flags (_ONLY_VIRTUAL_PUNCTS, _NO_VIRTUAL_FACETS
  596. and _CUSTOM_VIRTUAL_FACETS) in <mcompile.h>.
  597.  
  598. As mentioned above, a non-standard class has been added:
  599.  
  600. template <class charT>
  601. class timepunct
  602.     : public locale::facet
  603. {
  604. public:
  605.     explicit timepunct(size_t refs = 0);
  606.     const charT* weekday_name(size_t d) const;
  607.     const charT* month_name(size_t m) const;
  608.     const charT* am_pm(int hour) const;
  609. protected:
  610.     timepunct();
  611.     virtual const charT* do_weekday_name(size_t d) const;
  612.     virtual const charT* do_month_name(size_t m) const;
  613.     virtual const charT* do_am_pm(int hour) const;
  614. };
  615.  
  616. This class can be overridden so that the standard time_put and
  617. time_get work with user defined character strings to represent the
  618. names of the months (which default to "January", "February", ...),
  619. the days of the week (which default to "Sunday", "Monday", ...), and
  620. the am/pm designator (which defaults to "am", "pm").
  621.  
  622. To create your own timepunct class you must derive it from
  623. std::template <class charT> class _Generic_timepunct.  I reccommend
  624. that you copy the implementation for template <> class
  625. timepunct<char>.
  626.  
  627. <mcompile.h>
  628. ------------
  629.  
  630. In addition to the flags mentioned under locale section, the flag
  631. MSIPL_PARTIAL_SPECIALIZATION has been added.  This flag controls
  632. whether or not the library is expecting the compiler to support
  633. partial template specialization.
  634.  
  635. The flag _WIN32 has been added to the Windows platform.
  636.  
  637. The macro MSIPLSTD was changed from std to  ::std.
  638.  
  639. <memory>
  640. --------
  641.  
  642. get_temporary_buffer was rewritten.  It used to use a preallocated
  643. buffer when the size of the requested memory was small enough.  This
  644. has been changed to just use new because of concerns in a multi-
  645. threaded environment.
  646.  
  647. A non-standard class has been added: template <class T> class _TempVec.
  648. This creates an array of T by using get_temporary_buffer, and
  649. initializes it with a user supplied value.  The for reason this class is
  650. to facilitate the use of get_temporary_buffer in an exception-safe
  651. manner.  This class is used in <algorithm>.
  652.  
  653. There is a new auto_ptr in the Nov' 97 standard (which unfortunately
  654. is not public).  The best public information I know of on this subject
  655. can be found at http://www.dejanews.com/ (search for auto_ptr).  The
  656. main change in auto_ptr is that when the class relenquishes ownership
  657. of its pointer, it sets itself to null.  The Dec. '96 auto_ptr has
  658. been left in <memory>, but commented out.  If you require the '96
  659. behavior, then simply comment out the '97 version, and uncomment the
  660. '96 version.
  661.  
  662. <new>
  663. -----
  664.  
  665. References to DebugNew have been deleted.  This does not imply a lack
  666. of support for this utility.  Indeed, look forward to increased
  667. support in this area!
  668.  
  669. <ostream>
  670. ---------
  671.  
  672. A default constructor was added to aid in the construction of the
  673. standard streams in a non-leaking manner.
  674.  
  675. Corrected the basic_istream constructor which takes a streambuf
  676. pointer.  This not only made the class more standard, but corrected a
  677. problem with user-defined classes derived from istream.
  678.  
  679. Formatting of char output has been corrected (now obeys width and
  680. justification).
  681.  
  682. Output of char* has been rewritten to take advantage of the new
  683. locale.  There is however, no change in functionality.
  684.  
  685. The exception behavior of the formatted output operators has been
  686. modified.  Unfortunately a bug still lurks here.  If an exception is
  687. thrown, then the method should set badbit and rethrow the exception.
  688. Instead, badbit is left unset.  This is a known bug and will be fixed
  689. in the next release.
  690.  
  691. <string>
  692. --------
  693.  
  694. Fixed a bug in char_traits<char>::find related to char's greater than
  695. 127.
  696.  
  697. Removed default argument from
  698. iterator string::insert(iterator, char)
  699. per the standard.
  700.  
  701. Changed string output to respect stream width and justification.
  702. This is non-standard behavior, but I believe that the standard is in
  703. error (a type-o of a single word: smaller was written when larger meant).
  704. If the standard is strictly interpreted, then os << string;
  705. should produce no output at all!  (That is, for the common case of
  706. os.width() == 0).
  707.  
  708. <vector>
  709. --------
  710.  
  711. Reduced inline depth of serveral iterator operations.
  712.  
  713.  
  714. ===================================================================
  715. *  MSL C Source File Updates 
  716. ===================================================================
  717.  
  718.  
  719. *  ansi_parms.h 
  720.    C compiler flags have moved from <ansi_parms.h> to 
  721.    <ansi_prefix.xxx.h>, where xxx is mac or Win32.
  722.  
  723. *  file_io.mac.c
  724.    path2fss.c
  725.    Changes to allow the renaming of directories. MW00456
  726.  
  727. *  scanf.c
  728.    Modification to allow characters >= 128, e.g. fl or ä to be matched 
  729.    from format string correctly. MW06720
  730.  
  731. *  SIOUX.c
  732.    Fix to insert linefeed to make the sequence \b\n work correctly.
  733.  
  734.    Fix the enter key work as return on input from keyboards where 
  735.    the virtual key code is 0x34 as well for keyboards with an enter 
  736.    key virtual key code of 0x4c. MW06775
  737.  
  738. *  SIOUXWindows.c
  739.    Removed two ReleaseResource statements that released a shared 
  740.    resource, causing possible crashes in other applications. MW00225
  741.  
  742. *  fcntl.mac.h
  743.    fcntl.mac.c
  744.    fcntl.win32.h
  745.    Changes to the value of O_RDWR so that it has a non-zero value.  
  746.    MW00042.
  747.  
  748. *  unistd.mac.c
  749.    Fix to lseek for case where it is used to seek beyond EOF to 
  750.    extend the file.  MW00445  (I don't believe lseek implemented 
  751.    on Windows yet.)
  752.  
  753. *  file_io.mac.c
  754.    Change to allow an alias file name to be resolved.  MW00294
  755.  
  756. *  mem.c
  757.    Change to allow memchr to work on the PPC for characters of 
  758.    value > 127.  MW02625
  759.  
  760. *  console_io.mac.c
  761.    SIOUX.h
  762.    SIOUX.c
  763.    Changes to implement clrscr, for which there was a declaration 
  764.    in console.h but no code.
  765.  
  766. *  ansi_files.c
  767.    Change to allow error-free linking in case where _No_Console is 
  768.    defined.  MW07076, MW06847
  769.  
  770. *  file_io.c
  771.    The C Standard does not specify any action for fflush() on a 
  772.    stream opened for read only.  As it stood, our implementation  
  773.    caused the buffer to be reloaded.  This change turns fflush()
  774.    into a no-op if the file is opened for read.  MW02733
  775.  
  776. *  time.c
  777.    Corrected strftime to return the correct number of characters 
  778.    written and make proper check to avoid target string overrun. 
  779.    MW06496
  780.  
  781. *  SIOUXGlobals.c
  782.    SIOUXGlobals.h
  783.    Changes to make SIOUX_WASTE work properly for files greater 
  784.    than 32k.  MW07031
  785.  
  786. *  utime.win32.h
  787.    Change to reintroduce #include <winsock.h> eliminated earlier. 
  788.    This include is required and has been requested again from a 
  789.    user.  However, this leads to redeclaration warning messages 
  790.    during the building of the library due to the way that the 
  791.    Microsoft headers (which we can't change) have been written. 
  792.  
  793. *  fcntl.win32.h
  794.    fnctl.win32.c
  795.    Changes to remove #defines of open, creat, fcntl to _open, 
  796.    _creat, and _fcntl.
  797.  
  798. *  unistd.win32.h
  799.    unistd.win32.c
  800.   Changes to revert _lseek, _read, _write, _access, _close, 
  801.   _unlink, _rmdir, _chdir, _getcwd to lseek, read, write, access, 
  802.   close etc. while accommodating legacy code.
  803.  
  804.  
  805. ===================================================================
  806. *  WinSIOUX in MSL 2.4 (Pro 3), Updates for Pro3 Patch
  807. ===================================================================
  808.  
  809.    The Mac SIOUX-like project is now available for Windows.  This means 
  810.    that a new console window for WIN32 applications is available that 
  811.    permitssaving stdout to a file, printing it from a menu option, and 
  812.    includes ascroll bar.  A new stationary on the windows platforms is 
  813.    included, named WinSIOUX.  You will not get the standard DOS/NT console 
  814.    if you use this stationary.  The remaining functions from SIOUX will be 
  815.    included in future releases (for example, cut and paste, selecting font, 
  816.    and opening/closing files from the menu).
  817.    
  818.    The following has been added to the Pro3 Patch:
  819.    
  820. *  The addition of an Edit Menu with active items of Copy, Cut
  821.    Paste and Select All.
  822.     
  823. *  Keyboard shortcuts for menu items.  Note that, during keyboard
  824.    input to stdin or cin, the keyboard shortcuts are not available
  825.    and the corresponding menu items must be used.
  826.  
  827. *  Caret control both through the keyboard (arrow keys) and the
  828.    mouse.
  829.     
  830. *  The ability to select parts of the file with the mouse.
  831.  
  832. *  The ability to print just specific pages selected during the
  833.    print dialog.
  834.     
  835. *  During keyboard input to stdin or cin, ctrl+D and ctrl+Z both
  836.    serve as end-of-file markers.  There is no way to clear this
  837.    marker once it has been set.
  838.     
  839. *  While the program is running, Ctrl-C acts as a keyboard interrupt
  840.    that can be handled by a user specified handler.  If no handler is
  841.    provided by the user, the default handler will terminate the program.
  842.    When there parts of the file have been selected as under 4 above, 
  843.    Ctrl-C still acts as a keyboard shortcut for Copy.
  844.     
  845. *  Added proper handling of argv and argc variable length argument
  846.    lists.
  847.     
  848. *  The size of the console window can now be adjusted with the mouse in
  849.    the bottom right corner and the display of long lines of text will be
  850.    adjusted accordingly.
  851.  
  852.    
  853.  
  854. ===================================================================   
  855. Miscellaneous Notes
  856. ===================================================================
  857.  
  858. *  Precompiled header stationary sets precompiled headers to 4i-8d.  
  859.    When using precompiled headers built from the stationary, please 
  860.    ensure that the libraries you include in your project are also 4i-8d. 
  861.    If changing the precompiled headers preferences panels, please ensure 
  862.    that you build the associated libraries you plan to use with the same 
  863.    options.  A "#pragma check_header_flags" has been added to MSL.pch++ 
  864.    to help check for these types of errors. 
  865.    
  866. *  Improved clock for Mac platforms
  867.    To increase the tick count for the Mac platforms in order to use the 
  868.    facilities the Operating System provides, please change the following 
  869.    file:  
  870.        Metrowerks Standard Library/MSL C/MSL Mac/Public Includes/
  871.               timesize.mac.h
  872.    This file introduces a define (__TIMESIZE_DOUBLE) which enables the 
  873.    improved clock code in time.h and time.mac.c.  Please note that the 
  874.    clock_t typedef will change from an unsigned long to a type double. 
  875.    This also means that the clock function will change types.  Be sure 
  876.    you confirm in your code base that your return values are typed 
  877.    accordingly for clock and clock_t.
  878.    
  879. *  Multi-target project files.  You will see new project files with the 
  880.    string MTrg included in the project name.  This means that the project 
  881.    file can emit all targets from that single file, depending on your 
  882.    selection when you open the project file and choose a target.  However, 
  883.    it takes more time to open the multi-target project files.  This was
  884.    done for the windows platforms because scripting is not available in
  885.    the IDE on windows. 
  886.  
  887. *  Console applications for windows projects now stop before exiting so 
  888.    that output can be viewed.  This feature can be turned off by setting 
  889.    the preprocessor macro STOP_PROGRAM_BEFORE_EXIT in the windows 
  890.    prefix file, ansi_prefix.win32.h.  Be sure to rebuild MSL C after 
  891.    making this change.  Please note that if you redirect output to a 
  892.    serial device (such as a printer), you must still press enter to  
  893.    exit the program. 
  894.    
  895. *  There is a vbscript script in the "Metrowerks Standard Library" 
  896.    directory that rebuilds the precompiled header files, the win32 
  897.    runtime, and all MSL libraries.  Read the information at the top of 
  898.    the script file "msl_build.vbs" if you have problems running the 
  899.    script.  The file "msl_list" in the same directory can be configured 
  900.    to build exactly those libraries you wish to build.  If errors occur 
  901.    while building, they are logged in the file "error.log" in the 
  902.    "Metrowerks Standard Library" directory. 
  903.  
  904.  
  905. ========================================================================
  906. Contacting Metrowerks
  907. ========================================================================
  908.  
  909. For bug reports, technical questions, and suggestions, please use the
  910. forms in the Release Notes folder on the CD, and send them to
  911.  
  912. support@metrowerks.com
  913.  
  914. See the CodeWarrior on the Nets document in the Release Notes folder for
  915. more contact information, including a list of Internet newsgroups, 
  916. online services, and patch and update sites.
  917.  
  918. ========================================================================
  919.  
  920. Metrowerks Corporation
  921.